/*
*********************************************************************************************************
*
*	文件名称：usapp_user.h
*	版    本: V1.0
*	说		明: 用户程序头文件，接口定义
*	作    者：zlh
*
*		版本号  日期        作者      说明
*		V1.0    2023-05-13  zlh   		首版
*********************************************************************************************************
*/
#ifndef  _USAPP_USER_H_
#define  _USAPP_USER_H_
#include "queue.h"

#define FLASH_SAVE_HEAD					0xAA							//存储包头
#define FILTER_RUN_TIME_ADDR		0x800FFF0					//滤网运行时长掉电存储地址
#define FILTER_SET_TIME_ADDR		0x800FFF8					//滤网设置时长掉电存储地址

#define RS485_ID							1
#define RS485_MAX							8

/*task_timer*/
#define TASK_UART_SEND_DLY		10
#define TASK_DISPLAY_DLY			500
#define TASK_NET_DLY					100
#define TASK_RS485_DLY				100
#define TASK_T_H_DLY					500
#define TASK_TIMER_DLY				1000

#define FILTER_DEFAULT_TIME		120000					//默认2000小时
#define SYS_TIME_1S						15							//首次上电1秒的时候判断滤网
#define SYS_TIME_10MIN				6010							//滤网工作时长10分钟保存一次,单位100ms，数值6000，调试100ms当10分钟
																							//做特殊设计，首次5为上电开机，如果滤网过期实时显示出滤网过期图标，不用10分钟后
#define PM25_BAD							100//250		
#define PM25_GEN							200//35
#define VOC_BAD								180//120
#define VOC_GEN								90//30
#define SLAVE_MARK						20000


#define FAN_PWM_CTR(n)	 			(n*25 + 50)
#define EQUAL_VALUE(a,b) 			(a==b?FALSE:TRUE) 
#define SET_BIT(a,b)  				(a |= (1 << b))
#define CLR_BIT(a,b)  				(a &= ~(1<<b))
#define GET_BIT(a,b)   				((a) >> (b)&1)

#define BIT0	        0x01 	     //将BITx置1
#define BIT1         	0x02
#define BIT2	        0x04
#define BIT3	        0x08
#define BIT4	        0x10
#define BIT5	        0x20
#define BIT6	        0x40
#define BIT7	        0x80

#define NET_DISCONNECT_CNT		20			//持续2s没有数据断网
#define DEFAULT_COUNT_DOWN		360			//倒计时180秒,360*0.5

#define ERR_TEMP_COUNT				100			//温度连续100次错误即表示异常
#define ERR_HUM_COUNT					100			//湿度连续100次错误即表示异常
#define ERR_FAN_COUNT					50			//风扇连续100次错误即表示异常
#define ERR_PM_VOC_COUNT			50			//PM2.5和VOC连续100次错误即表示异常
#define ERR_ION_COUNT					50			//离子连续100次错误即表示异常


extern xQueueHandle remote_con_queue;
extern xQueueHandle net_rd_queue;
extern xQueueHandle air_quality_queue;
extern xQueueHandle t_h_queue;
extern xQueueHandle rs485_queue;

uint8_t fldrv_check_sum(u8 *buf, u8 len);
#endif

